<?php
class Web_View_Helper_Opciones
	extends Zend_View_Helper_Abstract
{
	
    const TYPE_INPUT = 'input';
    const TYPE_RADIO = 'radio';
    const TYPE_CHECKBOX = 'checkbox';
    
	public function opciones( $elements, $cantidadMinima, $cantidadMaxima, $id, $type, $cantidadPorOpcion = null ) 
	{
		if( $type == 'productos' ){
		
			if ( $cantidadMaxima == 1 &&  $cantidadMinima == 1 ){
				$type = 'radio';
				$titulo = $this->view->translate('selectOneOpcion');
				
			} else {
				$type = 'text';
				$titulo = sprintf($this->view->translate('selectNOpcions'), $cantidadMaxima);
			}
			
			$html2 = $this->_productos($elements, $type, $id);
		
		} else {
		
			$opcion = current($elements);
			$familia = $opcion->getFamilia();
			
			$titulo = "{$familia->nombre}: ";
			
			
			if ( $cantidadMaxima == 1 &&  $cantidadMinima == 1 ){
				$type = 'radio';
				$titulo.= "<span>{$this->view->translate('requiredOption')}</span>";
			} else {
				
			    if( !empty($cantidadPorOpcion) && $cantidadPorOpcion > 1){
			        $type = 'input';
			    } else {
			        $type = 'checkbox';
			    }
			    
				
				if( $cantidadMinima == $cantidadMaxima ){
					$titulo.= "<span>".sprintf($this->view->translate('selectNOpcions'), $cantidadMaxima)."</span>";
				} else {
				
					if( $cantidadMinima > 0 ){
						$titulo.= "<span>{$this->view->translate('min')} {$cantidadMinima}</span>, ";
					}else{
						$titulo.= "<span>{$this->view->translate('opcional')}</span>, ";
					} 
					
					$titulo.= "<span>{$this->view->translate('max')} {$cantidadMaxima}</span>";
					
					
				}
				
			}
			
			$html2 = $this->_opciones($elements, $type, $id);
			
		} 
		//<p class="missing"></p>
		$html = "<div class='options'>";
		$html.= '<div class="labelContainer"><p>'.$titulo.'</p></div>';
		$html.= '<div class="optionsContainer" min="'.$cantidadMinima.'" max="'.$cantidadMaxima.'" ><ul>';
		$html.= $html2;		
		$html.= "</ul><div class='clear'></div></div></div>";
		
		return $html;
		
	}
	
	protected function _productos( $productos, $type, $idItem)
	{
		$html = '';
	
		if ( $type == 'text' ){
					
			foreach ($productos as $producto){
				
				$id = "producto-{$producto->getId()}";
//				$html.= "<li><input type='text' name='producto-{$producto->getId()}' id='{$id}' class='item-{$idItem}' value='0'/>";
//				$html.= "<label for='{$id}'>{$producto->nombre}</label></li>";
				$html.= $this->_input("producto-{$producto->getId()}", $id, 0, $producto->nombre, "item-{$idItem}" );
			}
			
		} else {
			
			foreach ($productos as $producto){
				
				$id = "producto-{$producto->getId()}";
//				$html.= "<li><input type='radio' name='item-{$idItem}' id='producto-{$producto->getId()}' class='item-{$idItem}' value='{$producto->getId()}'/>";
//				$html.= "<label for='{$id}'>{$producto->nombre}</label></li>";
				$html.= $this->_radio("producto-{$producto->getId()}", $id, $producto->getId(), $producto->nombre, "item-{$idItem}" );
			}
		}
		
		return $html;
	}
	
	protected function _opciones( $opciones, $type, $idFamilia)
	{
		$html = '';
	
		if ( $type == 'checkbox' ){
					
			foreach ($opciones as $opcion){
				
				$id = "opcion-{$opcion->getId()}";
				
				$nombre = $opcion->nombre;
				
				if( $opcion->precioAdicional ){
					$nombre.= ' ( + $' . $opcion->precioAdicional . ' )';
				}
//				$html.= "<li><input type='checkbox' name='opcion-{$opcion->getId()}' id='{$id}' class='familia-{$idFamilia}' value='1'/>";
//				$html.= "<label for='{$id}'>{$nombre}</label></li>";
				$html.= $this->_checkbox("opcion-{$opcion->getId()}", $id, 1, $nombre, "familia-{$idFamilia}" );
				
			}
			
		} elseif ( $type == 'input' ){
					
			foreach ($opciones as $opcion){
				
				$id = "opcion-{$opcion->getId()}";
				
				$nombre = $opcion->nombre;
				
				if( $opcion->precioAdicional ){
					$nombre.= ' ( + $' . $opcion->precioAdicional . ' )';
				}
//				$html.= "<li><input type='text' name='opcion-{$opcion->getId()}' id='{$id}' class='item-{$idFamilia}' value='0'/>";
//				$html.= "<label for='{$id}'>{$nombre}</label></li>";
//                $name, $id, $value, $label, $class
				$html.= $this->_input("opcion-{$opcion->getId()}", $id, 0, $nombre, "familia-{$idFamilia}" );
			}
			
		} else {
			
			foreach ($opciones as $opcion){
				
				$id = "opcion-{$opcion->getId()}";
				
				$nombre = $opcion->nombre;
				
				if( $opcion->precioAdicional ){
					$nombre.= ' ( + $' . $opcion->precioAdicional . ' )';
				}
//				$html.= "<li><input type='radio' name='item-{$idFamilia}' id='opcion-{$opcion->getId()}' class='familia-{$idFamilia}' value='{$opcion->getId()}'/>";
//				$html.= "<label for='{$id}'>{$nombre}</label></li>";
				
				//                $name, $id, $value, $label, $class
				$html.= $this->_radio("item-{$idFamilia}", $id, $opcion->getId(), $nombre, "familia-{$idFamilia}" );
			}
		}
		
		return $html;
	}
	
    protected function _label( $label, $id)
	{
	    return "<label for='{$id}'>{$label}</label>";
	}
	
	protected function _radio( $name, $id, $value, $label, $class)
	{
	    return "<li><input type='radio' name='{$name}' id='{$id}' class='{$class}' value='{$value}'/>" . $this->_label( $label, $id) . "</li>";
	}
	
    protected function _checkbox( $name, $id, $value, $label, $class)
	{
	    return "<li><input type='checkbox' name='{$name}' id='{$id}' class='{$class}' value='{$value}'/>" . $this->_label( $label, $id) . "</li>";
	}
	
    protected function _input( $name, $id, $value, $label, $class)
	{
	    return "<li><input type='text' name='{$name}' id='{$id}' class='{$class}' value='{$value}'/>" . $this->_label( $label, $id) . "</li>";
	}
	
	
	
	
}